function ajax(opts){
    // 默认的配置
    const defalutOpt = {
        url: '',
        type: 'get',
        data: {},
        dataType: 'string',
        async: true, //是否同步
        success:function (){

        }
    }
    // 做传入参数类型限制
    // 1.url是一个字符串
    // 2.type是一个字符串 而且只能传get和post
    // 3.data是一个对象
    // 4.dataType是一个字符串  而且只能传string(将响应原样返回) json(将响应json解析之后返回)
    // 5.async 是一个布尔值
    // 6.success是一个函数类型
    // 将用户传入配置和默认的配置合并
    const option = {...defalutOpt,...opts}
    const xhr = new XMLHttpRequest
    let str = ''
    for(let name in option.data){
        str+= `${name}=${option.data[name]}&`
    }
    str = str.slice(0,-1)
    // 用户传过来参数数据 是一个对象  {a:1,b:2}   转换成 'a=1&b=2'
    // 如果是get方式 参数拼接地址后面 ?a=1&b=2
    // 若果是post方式  参数  send('a=1&b=2')  xhr.setHttpHeader
    if(option.type.toLowerCase() === 'get'){
        xhr.open(option.type, `${option.url}?${str}`, option.async)
        xhr.send()
    }else{
        xhr.open(option.type,option.url, option.async)
        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
        xhr.send(str)
    }
    xhr.onload =function(){
        let res = xhr.responseText
        if(option.dataType.toLowerCase() === 'json'){
            // 将json字符串转换成Js对象
            res = JSON.parse(res)
        }
        option.success(res)
    }
}
